package appvideo.logica;

import appvideo.persistencia.Persistencia_Proveedores;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class Proveedor {
    private int id;
    private String nombre;
    private String email;
    private String direccion;
    private int tlf;
    private Date fAlta;

    public Proveedor(String nombre, String email, String direccion, int tlf, Date fAlta) {
        this.nombre = nombre;
        this.email = email;
        this.direccion = direccion;
        this.tlf = tlf;
        this.fAlta = fAlta;
    }
    
    public Proveedor(int id, String nombre, String email, String direccion, int tlf, Date fAlta) {
        this.id = id;
        this.nombre = nombre;
        this.email = email;
        this.direccion = direccion;
        this.tlf = tlf;
        this.fAlta = fAlta;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Date getfAlta() {
        return fAlta;
    }

    public void setfAlta(Date fAlta) {
        this.fAlta = fAlta;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getTlf() {
        return tlf;
    }

    public void setTlf(int tlf) {
        this.tlf = tlf;
    }

    public boolean altaProveedor(){
        boolean ret = Persistencia_Proveedores.altaProveedor(this); 
        //Si esta en alta->retornamos un aviso
        if(ret==false){
            System.out.println("Proveedor "+this.getNombre()+" no puedo añadirse en la base de datos");
        }else{
            System.out.println("Proveedor "+this.getNombre()+" añadido a la Base de Datos");
        }
        
        return ret;
    }
    
    public boolean bajaProveedor(){
        boolean ret = Persistencia_Proveedores.bajaProveedor(this);
        //Si el proveedor no está en la Base de datos genera aviso.
        if(ret==true){
            System.out.println("Baja realizada");
        }else
            System.out.println("Baja no realizada");
        return ret;
    }
    
    public boolean modificaProveedor(){
        boolean ret=false;
        ret=Persistencia_Proveedores.modificaProveedor(this);
        if(ret==false){
            System.out.println("No se pudo realizar la modificacion del proveedor "+this.getNombre());
        }else{
            System.out.println("Modificaciones del proveedor "+this.getNombre()+" realizadas");
        }
        return ret;
    }
    
    public static void visualizaProveedores(){
        List<Proveedor> proveedores=new ArrayList();
        String dev="";
        //Ir a la base de datos a por la lista de proveedores.
        System.out.println("Bases de datos devolviendo todos los proveedores del videoclub\n");
        proveedores=Persistencia_Proveedores.getProveedores();
        
        for(Proveedor p: proveedores){
            System.out.println(p.toString());
        }
        System.out.println("\n");
    }
    //Cod sera el ID de proveedor
    public static Proveedor buscaProveedor(int cod_proveedor){
        Proveedor p;
        //Busca el proveedor en la BD y me lo devuelve por su codigo(id)
        System.out.println("Buscando proveedor de codigo "+cod_proveedor+" en la BASE DE DATOS");
        p=Persistencia_Proveedores.buscaProveedor(cod_proveedor);
        if(p==null)
            System.out.println("No existe el proveedor de codigo: "+cod_proveedor);
        else{
            System.out.println("Proveedor encontrado");
        }
        
        return p;
    }
    
    public void visualizaProductosProveedor(){
        List<Producto> articulos=new ArrayList();
        String dev="";
        //Ir a la base de datos a por la lista de proveedores.
        System.out.println("Bases de datos devolviendo todos los productos del proveedor "+this.getNombre());
        articulos=Persistencia_Proveedores.getArticulosProveedor(this);
        
        for(Producto p: articulos){
            System.out.println(p.toString()+"\tTarifa asociada: "+p.getTarifa().toString());
        }
        System.out.println("\n");
    }
    @Override
    public String toString(){
        return getId()+"\t"+getNombre()+"\t"+getEmail()+"\t"+getTlf()+"\t"+getDireccion()+"\t"+getfAlta();
    }
    
   public static List<Proveedor> visualizarProveedores(){
        return Persistencia_Proveedores.getProveedores();
    }
    
    
}
